import { login, userInfoApi, userInfoDetailApi } from "@/api/user";
import { getToken, setToken, removeToken, setTime } from "@/utils/auth";
//import * as tokenfunc from "@/utils/auth";
//console.log(tokenfunc, 6667878);
//console.log(getToken,setToken,removeToken,2222);

import { resetRouter } from "@/router";
export default {
  namespaced: true,
  state: {
    token: getToken(),
    userInfo: {}
  },
  mutations: {
    setToken(state, token) {
      state.token = token; //  存储了token
      setToken(token); // 调用本地存储函数
    },
    removeToken(state) {
      removeToken();
    },
    setUserInfo(state, result) {
      state.userInfo = result; //设置用户信息
    },
    removeUserInfo(state) {
      state.userInfo = {}; //  删除胡用户信息
    }
  },
  actions: {
    //  点击登录按钮
    async loginApi({ commit }, data) {
      /* 方法1： */
      //  当前模块中封装的登录函数
      // const {
      //   data: { data: token }
      // } = await login(data); //  api中的接口函数
      //console.log(token, 66666);
      const res = await login(data);

      console.log(res, 6666);
      commit("setToken", res);
      setTime(); //登录成功后  设置成功时的时间戳

      /* 方法2： */
      //  当前模块中封装的登录函数
      // return new Promise(async (resolve, reject) => {
      //   const {
      //     data: { data: token }
      //   } = await login(data); //  api中的接口函数
      //   console.log(token, 66666);
      //   commit("setToken", token);

      //   resolve(); //  登陆成功后执行一个回调函数
      // });
    },
    /* 获取用户信息 */
    async getUserInfo({ commit }) {
      //  获取用户信息处请求
      const result = await userInfoApi();
      //console.log(result, 8888);
      //  获取用户详细信息
      const result2 = await userInfoDetailApi(result.userId);
      //console.log(result2,9999);
      commit("setUserInfo", { ...result, ...result2 });
      return result; // 这里为什么要返回 为后面埋下伏笔
    },
    async logout({ commit }) {
      commit("removeToken");
      commit("removeUserInfo");

      //  重置路由
      resetRouter();
      commit("permission/setRoutes", [], { root: true });
    }
  }
};
